﻿using Credinka.Ayni.GEN.UTL;
using Credinka.Ayni.SEA.EN;
using Credinka.Ayni.SEA.RN;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class AsociarObjetoAFormulario : System.Web.UI.Page
{
    private List<enFormularioObjeto> loenFormularioObjeto;
    private enFormularioObjeto oenFormularioObjeto;
    private rnFormularioObjeto ornFormularioObjeto;

    private List<enFormulario> loenFormulario;
    private enFormulario oenFormulario;
    private rnFormulario ornFormulario;

    private List<enDescripcion> loenObjeto;
    private enDescripcion oenDescripcion;
    private rnDescripcion ornDescripcion;

    string codigo = string.Empty;

    protected void Page_Load(object sender, EventArgs e)
    {
        codigo = Page.Request.QueryString.AllKeys.ToList().Count > 0 ? Page.Request.QueryString["codigo"].ToString() : string.Empty;
        if (!Page.IsPostBack)
        {
            ListarObjeto();
            ListarFormulario();
            
            if (!codigo.Equals(string.Empty))
            {
                hdfFormulario.Value = codigo;
                ddlFormulario.Enabled = false;
                ddlFormulario.SelectedValue = hdfFormulario.Value.ToString();
                CargarObjetoSeleccionado();
            }
        }
    }

    private void ListarObjeto()
    {
        oenDescripcion = new enDescripcion();
        ornDescripcion = new rnDescripcion();
        loenObjeto = ornDescripcion.ListarObjeto();

        chkObjeto.DataSource = loenObjeto;
        chkObjeto.DataTextField = "DescripcionCorta";
        chkObjeto.DataValueField = "CodigoElemento";
        chkObjeto.DataBind();
    }

    private void ListarFormulario()
    {
        oenFormulario = new enFormulario();
        ornFormulario = new rnFormulario();
        loenFormulario = new List<enFormulario>();
        loenFormulario = ornFormulario.Listar();

        ddlFormulario.DataSource = loenFormulario;
        ddlFormulario.DataTextField = "Nombre";
        ddlFormulario.DataValueField = "IdFormulario";
        ddlFormulario.DataBind();
    }

    private void CargarObjetoSeleccionado()
    {
        oenFormularioObjeto = new enFormularioObjeto();
        ornFormularioObjeto = new rnFormularioObjeto();

        oenFormularioObjeto.IdFormulario = int.Parse(ddlFormulario.SelectedValue);
        loenFormularioObjeto = ornFormularioObjeto.ListarObjeto(oenFormularioObjeto);
        Session["ObjetosBD"] = loenFormularioObjeto;

        foreach (ListItem item in chkObjeto.Items)
        {
            foreach (enFormularioObjeto itemObtenidos in loenFormularioObjeto)
            {
                if (int.Parse(item.Value) == itemObtenidos.CodigoObjeto)
                    item.Selected = true;
            }
        }
    }

    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        chkObjeto.ClearSelection();
        CargarObjetoSeleccionado();
    }

    protected void btnSi_Click(object sender, EventArgs e)
    {
        ornFormularioObjeto = new rnFormularioObjeto();
        oenFormularioObjeto = new enFormularioObjeto();
        loenFormularioObjeto = (List<enFormularioObjeto>)Session["ObjetosBD"];

        oenFormularioObjeto.IdFormulario = int.Parse(ddlFormulario.SelectedValue);
        oenFormularioObjeto.CodigoEstado = 1;
        foreach (ListItem item in chkObjeto.Items)
        {
            if (item.Selected)
            {
                var newList = loenFormularioObjeto.FindAll(s => s.CodigoObjeto == int.Parse(item.Value));

                if (newList.Count == 0)
                {
                    oenFormularioObjeto.CodigoObjeto = int.Parse(item.Value);
                    oenFormularioObjeto.AudNombreUsuarioCreacion = utlAuditoria.ObtenerUsuarioDominio();
                    oenFormularioObjeto.AudIPCreacion = utlAuditoria.ObtenerDireccionIP();
                    oenFormularioObjeto.AudMacCreacion = utlAuditoria.ObtenerDireccionMAC();
                    oenFormularioObjeto.udFechaCreacion = DateTime.Now;
                    ornFormularioObjeto.Registrar(oenFormularioObjeto);    
                }
            }
            else
            {
                var newList = loenFormularioObjeto.FindAll(s => s.CodigoObjeto == int.Parse(item.Value));
                foreach (var itemNew in newList)
                {
                    oenFormularioObjeto.IdFormularioObjeto = itemNew.IdFormularioObjeto;
                    oenFormularioObjeto.AudMacModificacion = utlAuditoria.ObtenerDireccionMAC();
                    oenFormularioObjeto.AudNombreUsuarioModificacion = utlAuditoria.ObtenerUsuarioDominio();
                    oenFormularioObjeto.AudIPModificacion = utlAuditoria.ObtenerDireccionIP();
                    ornFormularioObjeto.Eliminar(oenFormularioObjeto);        
                }
            }
        }
        ScriptManager.RegisterStartupScript(this, GetType(), "RefreshScript", " window.parent.location.reload();", true);
    }
}